home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-11-11 | 13.2 KB | 734 lines | [TEXT/MPS ] |
- ;
- ; File: TextUtils.a
- ;
- ; Copyright: © 1984-1994 by Apple Computer, Inc.
- ; All rights reserved.
- ;
- ; Version: Universal Interfaces 2.0a3 ETO #16, MPW prerelease. Friday, November 11, 1994.
- ;
- ; Bugs?: If you find a problem with this file, send the file and version
- ; information (from above) and the problem description to:
- ;
- ; Internet: apple.bugs@applelink.apple.com
- ; AppleLink: APPLE.BUGS
- ;
- ;
-
- IF &TYPE('__TEXTUTILS__') = 'UNDEFINED' THEN
- __TEXTUTILS__ SET 1
-
-
- IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
- include 'Types.a'
- ENDIF
- ; include 'ConditionalMacros.a' ;
-
- IF &TYPE('__SCRIPT__') = 'UNDEFINED' THEN
- include 'Script.a'
- ENDIF
- ; include 'Quickdraw.a' ;
- ; include 'MixedMode.a' ;
- ; include 'QuickdrawText.a' ;
- ; include 'IntlResources.a' ;
- ; include 'Events.a' ;
- ; include 'OSUtils.a' ;
- ; include 'Memory.a' ;
- ;
- ;
- ; Here are the current routine names and the translations to the older forms.
- ; Please use the newer forms in all new code and migrate the older names out of existing
- ; code as maintainance permits.
- ;
- ; New Name Old Name(s)
- ;
- ; CompareString IUCompPString IUMagString IUMagPString IUCompString
- ; CompareText
- ; DateString IUDatePString IUDateString
- ; EqualString
- ; ExtendedToString FormatX2Str
- ; FindScriptRun
- ; FindWordBreaks NFindWord FindWord
- ; FormatRecToString Format2Str
- ; GetIndString
- ; GetString
- ; IdenticalString IUMagIDString IUMagIDPString IUEqualString IUEqualPString
- ; IdenticalText
- ; InitDateCache
- ; LanguageOrder IULangOrder
- ; LongDateString IULDateString
- ; LongTimeString IULTimeString
- ; LowercaseText LwrText LowerText
- ; Munger
- ; NewString
- ; NumToString
- ; RelString
- ; ReplaceText
- ; ScriptOrder IUScriptOrder
- ; SetString
- ; StringOrder IUStringOrder
- ; StringToDate String2Date
- ; StringToExtended FormatStr2X
- ; StringToFormatRec Str2Format
- ; StringToNum
- ; StringToTime
- ; StripDiacritics StripText
- ; StyledLineBreak
- ; TextOrder
- ; TimeString IUTimeString IUTimePString
- ; TruncString
- ; TruncText
- ; UpperString UprString
- ; UppercaseStripDiacritics StripUpperText
- ; UppercaseText UprText UprText
- ;
- ; New constants for System 7.0:
-
- ; Constants for truncWhere argument in TruncString and TruncText
- truncEnd EQU 0 ; Truncate at end
- truncMiddle EQU $4000 ; Truncate in middle
- smTruncEnd EQU 0 ; Truncate at end - obsolete
- smTruncMiddle EQU $4000 ; Truncate in middle - obsolete
- ; Constants for TruncString and TruncText results
- notTruncated EQU 0 ; No truncation was necessary
- truncated EQU 1 ; Truncation performed
- truncErr EQU -1 ; General error
- smNotTruncated EQU 0 ; No truncation was necessary - obsolete
- smTruncated EQU 1 ; Truncation performed - obsolete
- smTruncErr EQU -1 ; General error - obsolete
-
- fVNumber EQU 0 ; first version of NumFormatString
- ; Special language code values for Language Order
- systemCurLang EQU -2 ; current (itlbLang) lang for system script
- systemDefLang EQU -3 ; default (table) lang for system script
- currentCurLang EQU -4 ; current (itlbLang) lang for current script
- currentDefLang EQU -5 ; default lang for current script
- scriptCurLang EQU -6 ; current (itlbLang) lang for specified script
- scriptDefLang EQU -7 ; default language for a specified script
-
- iuSystemCurLang EQU -2 ; <obsolete> current (itlbLang) lang for system script
- iuSystemDefLang EQU -3 ; <obsolete> default (table) lang for system script
- iuCurrentCurLang EQU -4 ; <obsolete> current (itlbLang) lang for current script
- iuCurrentDefLang EQU -5 ; <obsolete> default lang for current script
- iuScriptCurLang EQU -6 ; <obsolete> current (itlbLang) lang for specified script
-
- ; <obsolete> default language for a specified script
- iuScriptDefLang EQU -7
-
- smBreakWord EQU 0
- smBreakChar EQU 1
- smBreakOverflow EQU 2
-
- fPositive EQU 0
- fNegative EQU 1
- fZero EQU 2
-
- fFormatOK EQU 0
- fBestGuess EQU 1
- fOutOfSynch EQU 2
- fSpuriousChars EQU 3
- fMissingDelimiter EQU 4
- fExtraDecimal EQU 5
- fMissingLiteral EQU 6
- fExtraExp EQU 7
- fFormatOverflow EQU 8
- fFormStrIsNAN EQU 9
- fBadPartsTable EQU 10
- fExtraPercent EQU 11
- fExtraSeparator EQU 12
- fEmptyFormatString EQU 13
-
- NumFormatString RECORD 0
- fLength ds.b 1
- fVersion ds.b 1
- data ds.b 254 ; private data
- sizeof EQU 256
- ENDR
-
- FVector RECORD 0
- start ds.w 1
- length ds.w 1
- sizeof EQU 4
- ENDR
-
- ; index by [fPositive..fZero]
- ScriptRunStatus RECORD 0
- script ds.b 1
- runVariant ds.b 1
- sizeof EQU 2
- ENDR
-
- ; New types for System 7.0:
- ; Type for truncWhere parameter in new TruncString, TruncText
-
- shortDate EQU 0
- longDate EQU 1
- abbrevDate EQU 2
-
- ; StringToDate status values
- fatalDateTime EQU $8000 ; StringToDate and String2Time mask to a fatal error
- longDateFound EQU 1 ; StringToDate mask to long date found
- leftOverChars EQU 2 ; StringToDate & Time mask to warn of left over characters
- sepNotIntlSep EQU 4 ; StringToDate & Time mask to warn of non-standard separators
- fieldOrderNotIntl EQU 8 ; StringToDate & Time mask to warn of non-standard field order
- extraneousStrings EQU 16 ; StringToDate & Time mask to warn of unparsable strings in text
- tooManySeps EQU 32 ; StringToDate & Time mask to warn of too many separators
- sepNotConsistent EQU 64 ; StringToDate & Time mask to warn of inconsistent separators
- tokenErr EQU $8100 ; StringToDate & Time mask for 'tokenizer err encountered'
- cantReadUtilities EQU $8200
- dateTimeNotFound EQU $8400
- dateTimeInvalid EQU $8800
-
- DateCacheRecord RECORD 0
- hidden ds.w 256 ; only for temporary use
- sizeof EQU 512
- ENDR
-
- BreakTable RECORD 0
- charTypes ds.b 256
- tripleLength ds.w 1
- triples ds.w 1
- sizeof EQU 260
- ENDR
-
- ; New NBreakTable for System 7.0:
- NBreakTable RECORD 0
- flags1 ds.b 1
- flags2 ds.b 1
- version ds.w 1
- classTableOff ds.w 1
- auxCTableOff ds.w 1
- backwdTableOff ds.w 1
- forwdTableOff ds.w 1
- doBackup ds.w 1
- length ds.w 1 ; length of NBreakTable
- charTypes ds.b 256
- tables ds.w 1
- sizeof EQU 274
- ENDR
-
- ;
- ; The following functions are new names that work on 68k and PowerPC
- ;
- IF GENERATING68K THEN
- Macro
- _InitDateCache
- dc.w $2F3C
- dc.w $8204
- dc.w $FFF8
- dc.w $A8B5
- EndM
- ELSE
- IMPORT InitDateCache
- ENDIF
-
- IF GENERATING68K THEN
- _Munger: OPWORD $A9E0
- ELSE
- IMPORT Munger
- ENDIF
-
- IF GENERATING68K THEN
- _NewString: OPWORD $A906
- ELSE
- IMPORT NewString
- ENDIF
-
- IF GENERATING68K THEN
- _SetString: OPWORD $A907
- ELSE
- IMPORT SetString
- ENDIF
-
- IF GENERATING68K THEN
- _GetString: OPWORD $A9BA
- ELSE
- IMPORT GetString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _ScriptOrder
- move.w #$001E,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT ScriptOrder
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _StyledLineBreak
- dc.w $2F3C
- dc.w $821C
- dc.w $FFFE
- dc.w $A8B5
- EndM
- ELSE
- IMPORT StyledLineBreak
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _TruncString
- dc.w $2F3C
- dc.w $8208
- dc.w $FFE0
- dc.w $A8B5
- EndM
- ELSE
- IMPORT TruncString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _TruncText
- dc.w $2F3C
- dc.w $820C
- dc.w $FFDE
- dc.w $A8B5
- EndM
- ELSE
- IMPORT TruncText
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _ReplaceText
- dc.w $2F3C
- dc.w $820C
- dc.w $FFDC
- dc.w $A8B5
- EndM
- ELSE
- IMPORT ReplaceText
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _FindWordBreaks
- dc.w $2F3C
- dc.w $C012
- dc.w $001A
- dc.w $A8B5
- EndM
- ELSE
- IMPORT FindWordBreaks
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _LowercaseText
- move.w #$0000,-(sp)
- dc.w $2F3C
- dc.w $800A
- dc.w $FFB6
- dc.w $A8B5
- EndM
- ELSE
- IMPORT LowercaseText
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _UppercaseText
- move.w #$0400,-(sp)
- dc.w $2F3C
- dc.w $800A
- dc.w $FFB6
- dc.w $A8B5
- EndM
- ELSE
- IMPORT UppercaseText
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _StripDiacritics
- move.w #$0200,-(sp)
- dc.w $2F3C
- dc.w $800A
- dc.w $FFB6
- dc.w $A8B5
- EndM
- ELSE
- IMPORT StripDiacritics
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _UppercaseStripDiacritics
- move.w #$0600,-(sp)
- dc.w $2F3C
- dc.w $800A
- dc.w $FFB6
- dc.w $A8B5
- EndM
- ELSE
- IMPORT UppercaseStripDiacritics
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _FindScriptRun
- dc.w $2F3C
- dc.w $820C
- dc.w $0026
- dc.w $A8B5
- EndM
- ELSE
- IMPORT FindScriptRun
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _StringToDate
- dc.w $2F3C
- dc.w $8214
- dc.w $FFF6
- dc.w $A8B5
- EndM
- ELSE
- IMPORT StringToDate
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _StringToTime
- dc.w $2F3C
- dc.w $8214
- dc.w $FFF4
- dc.w $A8B5
- EndM
- ELSE
- IMPORT StringToTime
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _ExtendedToString
- dc.w $2F3C
- dc.w $8210
- dc.w $FFE8
- dc.w $A8B5
- EndM
- ELSE
- IMPORT ExtendedToString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _StringToExtended
- dc.w $2F3C
- dc.w $8210
- dc.w $FFE6
- dc.w $A8B5
- EndM
- ELSE
- IMPORT StringToExtended
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _StringToFormatRec
- dc.w $2F3C
- dc.w $820C
- dc.w $FFEC
- dc.w $A8B5
- EndM
- ELSE
- IMPORT StringToFormatRec
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _FormatRecToString
- dc.w $2F3C
- dc.w $8210
- dc.w $FFEA
- dc.w $A8B5
- EndM
- ELSE
- IMPORT FormatRecToString
- ENDIF
-
- ;
- ; The following functions are old names, but are required for PowerPC builds
- ; becuase InterfaceLib exports these names, instead of the new ones.
- ;
- IF GENERATING68K THEN
- Macro
- _IUMagString
- move.w #$000A,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT IUMagString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _IUMagIDString
- move.w #$000C,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT IUMagIDString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _IUMagPString
- move.w #$001A,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT IUMagPString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _IUMagIDPString
- move.w #$001C,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT IUMagIDPString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _IUDateString
- dc.w $4267
- dc.w $A9ED
- EndM
- ELSE
- IMPORT IUDateString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _IUTimeString
- move.w #$0002,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT IUTimeString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _IUDatePString
- move.w #$000E,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT IUDatePString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _IUTimePString
- move.w #$0010,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT IUTimePString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _IULDateString
- move.w #$0014,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT IULDateString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _IULTimeString
- move.w #$0016,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT IULTimeString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _IUScriptOrder
- move.w #$001E,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT IUScriptOrder
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _IULangOrder
- move.w #$0020,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT IULangOrder
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _IUTextOrder
- move.w #$0022,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT IUTextOrder
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _FindWord
- dc.w $2F3C
- dc.w $8012
- dc.w $001A
- dc.w $A8B5
- EndM
- ELSE
- IMPORT FindWord
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _NFindWord
- dc.w $2F3C
- dc.w $8012
- dc.w $FFE2
- dc.w $A8B5
- EndM
- ELSE
- IMPORT NFindWord
- ENDIF
-
- IF GENERATING68K THEN
- _UprText: OPWORD $A054
- ELSE
- IMPORT UprText
- ENDIF
-
- IF GENERATING68K THEN
- _LwrText: OPWORD $A056
- ELSE
- IMPORT LwrText
- ENDIF
-
- IF GENERATING68K THEN
- _LowerText: OPWORD $A056
- ELSE
- IMPORT LowerText
- ENDIF
-
- IF GENERATING68K THEN
- _StripText: OPWORD $A256
- ELSE
- IMPORT StripText
- ENDIF
-
- IF GENERATING68K THEN
- _UpperText: OPWORD $A456
- ELSE
- IMPORT UpperText
- ENDIF
-
- IF GENERATING68K THEN
- _StripUpperText: OPWORD $A656
- ELSE
- IMPORT StripUpperText
- ENDIF
-
- ;
- ; The following provide direct function prototypes for new names for 68k
- ;
- IF GENERATING68K THEN
- Macro
- _DateString
- move.w #$000E,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT DateString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _TimeString
- move.w #$0010,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT TimeString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _LongDateString
- move.w #$0014,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT LongDateString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _LongTimeString
- move.w #$0016,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT LongTimeString
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _CompareText
- move.w #$001A,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT CompareText
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _IdenticalText
- move.w #$001C,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT IdenticalText
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _LanguageOrder
- move.w #$0020,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT LanguageOrder
- ENDIF
-
- IF GENERATING68K THEN
- Macro
- _TextOrder
- move.w #$0022,-(sp)
- dc.w $A9ED
- EndM
- ELSE
- IMPORT TextOrder
- ENDIF
-
- IF ¬ OLDROUTINELOCATIONS THEN
- ENDIF
- ENDIF ; __TEXTUTILS__
-